home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / arch / mips / include / asm / byteorder.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  1.2 KB  |  68 lines

  1. /*
  2.  * This file is subject to the terms and conditions of the GNU General Public
  3.  * License.  See the file "COPYING" in the main directory of this archive
  4.  * for more details.
  5.  *
  6.  * Copyright (C) 1996, 99, 2003 by Ralf Baechle
  7.  */
  8. #ifndef _ASM_BYTEORDER_H
  9. #define _ASM_BYTEORDER_H
  10.  
  11. #include <linux/compiler.h>
  12. #include <asm/types.h>
  13.  
  14. #if defined(__MIPSEB__)
  15. # define __BIG_ENDIAN
  16. #elif defined(__MIPSEL__)
  17. # define __LITTLE_ENDIAN
  18. #else
  19. # error "MIPS, but neither __MIPSEB__, nor __MIPSEL__???"
  20. #endif
  21.  
  22. #define __SWAB_64_THRU_32__
  23.  
  24. #ifdef CONFIG_CPU_MIPSR2
  25.  
  26. static inline __attribute_const__ __u16 __arch_swab16(__u16 x)
  27. {
  28.     __asm__(
  29.     "    wsbh    %0, %1            \n"
  30.     : "=r" (x)
  31.     : "r" (x));
  32.  
  33.     return x;
  34. }
  35. #define __arch_swab16 __arch_swab16
  36.  
  37. static inline __attribute_const__ __u32 __arch_swab32(__u32 x)
  38. {
  39.     __asm__(
  40.     "    wsbh    %0, %1            \n"
  41.     "    rotr    %0, %0, 16        \n"
  42.     : "=r" (x)
  43.     : "r" (x));
  44.  
  45.     return x;
  46. }
  47. #define __arch_swab32 __arch_swab32
  48.  
  49. #ifdef CONFIG_CPU_MIPS64_R2
  50. static inline __attribute_const__ __u64 __arch_swab64(__u64 x)
  51. {
  52.     __asm__(
  53.     "    dsbh    %0, %1\n"
  54.     "    dshd    %0, %0"
  55.     : "=r" (x)
  56.     : "r" (x));
  57.  
  58.     return x;
  59. }
  60. #define __arch_swab64 __arch_swab64
  61. #endif /* CONFIG_CPU_MIPS64_R2 */
  62.  
  63. #endif /* CONFIG_CPU_MIPSR2 */
  64.  
  65. #include <linux/byteorder.h>
  66.  
  67. #endif /* _ASM_BYTEORDER_H */
  68.